package com.copa.l1;

import java.util.HashMap;

/**
 * @author copa
 * @createDate 2022-04-25 20:59
 * @function 哈希表法
 */
public class Test2 {
    public int[] twoSum(int[] nums, int target) {
        // 创建一个哈希表，然后设置为key：元素 value：索引
        HashMap<Integer, Integer> map = new HashMap<>();
        // 先初始化哈希表并设值
        for (int i = 0; i < nums.length; i++) {
            if (null == map.get(nums[i])) {
                map.put(nums[i], i);
            }
        }
        // 判断 用target-num[i] --> map中有没有这个
        // error1：要判断索引是否引用重复，题目说明不允许使用重复的元素，所以切记！
        for (int i = 0; i < nums.length; i++) {
            Integer j = map.get(target - nums[i]);
            if (null != j && i != j) {
                return new int[]{i, map.get(target - nums[i])};
            }
        }
        return null;
    }

    public static void main(String[] args) {
        int[] nums = {3, 2, 4};
        int target = 6;
        int[] result = new Test2().twoSum(nums, target);
        for (int i : result) {
            System.out.println(i);
        }
    }
}
